/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package comportement;

import InterfaceGraphique.MainApplication;
import InterfaceGraphique.exceptions.PopupException;
import cartes.Monstre;
import java.io.Serializable;
import java.util.logging.Level;
import java.util.logging.Logger;
import plateau.Joueur;
import plateau.Partie;

/**
 *
 * @author Arthur
 */
public class ActionGagnerNiveau  implements ActionCarte, Serializable {
    
    protected int nb;
    protected boolean limite = false;
    
    public ActionGagnerNiveau(int nb) {
        this.nb = nb;
    }
    
    public ActionGagnerNiveau(int nb, boolean limite) {
        this.nb = nb;
        this.limite = limite;
    }
    
    /*
     * Défausse une ou plusieurs carte de l'inventaire suite à un incident fâcheux
     */
    public void utiliser(Joueur j) {
        if( !limite || (j.getNiveau()) != Partie.getHighestNiveau()  )
            j.upNiveau(nb, Boolean.FALSE);
        else 
            MainApplication.showPopupError("Vous être trop fort pour utiliser cette carte, voyons !");  

    }

    public String getDescription() {
       throw new UnsupportedOperationException("Not supported yet.");
    }

    public void utiliser(Joueur j, Joueur j2) {
        // vol de niveau
        if( !limite || (j.getNiveau()) != Partie.getHighestNiveau()  ) {
            this.utiliser(j);
            j2.upNiveau(nb * (-1), Boolean.FALSE);
        }
    }

    public void utiliser(Monstre m) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
}
